package com.deepgames.mud.action.data;

import com.deepgames.mud.core.InternalCode;

/**
 * Must be implemented by all objects in a given action library document.
 * 	Classes which implement this interface and are dynamically loaded in to an
 * 	ActionLibrary can operate on the game's SessionManager and GobjectExtractor
 * 	instances in order to drive game logic.
 * 
 * @author Zack Hoffmann
 * @version 1.0
 * 
 */
public interface Action {
	/**
	 * Method called by the ActionEngine to process the game logic of this
	 * 	action.
	 * 
	 * @param sourceID		The ID of the object which caused this action.
	 * @param args			Any arguments needed to determine action logic.
	 * @param context		Reference to Action API methods.
	 * @return				Status code.  {@link InternalCode}
	 */
	public int execute (String sourceID, String args, ActionContext context);
}
